//////////////////////////////////////////////////////////////////////////
#pragma once


//////////////////////////////////////////////////////////////////////////
#include <RocketLua/RocketLua.hpp>


namespace Rocket
{
	namespace Core
	{
		namespace Lua
		{
			//////////////////////////////////////////////////////////////////////////
			class ROCKETLUA_EXPORT LuaEventListener : public Rocket::Core::EventListener
			{
			public:
				LuaEventListener( lua_State* state, const String& code, Element* element );
				virtual ~LuaEventListener();

				virtual void				ProcessEvent( Event& event ) override;
				virtual void				OnAttach( Element* element ) override;
				virtual void				OnDetach( Element* element ) override;

			private:
				uint32_t					mRefCount;
				lua_State*					mpState;
				int							mLuaRef;
				static const char*			mpListenerTable;
			};
		}
	}
}
